package com.sxj.corejava.code10_异常;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 石小俊
 * @date 2025年02月20日
 */
public class Test02_异常处理 {

    public static void main(String[] args) {
        try {
            String s = null;
            // s.equals("admin");
//            int i = 1 / 0;
            // 可能出现异常的代码
            Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2020-02-02");
            System.out.println(date);

            String[] arr = {"admin", "jack"};
            // System.out.println(arr[2]);
            System.out.println("try语句执行完毕");
            // 此处使用return关键字后,finally仍然会执行
            // return;
            // 如果想要强制退出,不再执行finally中的语句,则可以使用System.exit(0)表示终止当前正在运行的JVM
            System.exit(0);
        } catch (ArithmeticException e) {
//            System.out.println("除数不能为0");
            System.out.println(e);
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (NullPointerException e) {
            System.err.println("空指针异常");
        } catch (ParseException e) {
            // 捕获指定异常
            // 当执行try里面的代码遇到了指定的异常之后,在此处进行异常处理
            System.err.println("日期格式不对,格式必须为:yyyy-MM-dd");
        } catch (Exception e) {
            System.out.println("其他异常,异常为:" + e);
        } finally {
            // 不管是否存在异常,都会执行该代码
            // 即:整个代码的执行顺序存在两种情况:
            // 1.try->finally
            // 2.catch->finally
            System.out.println("*****************这是finally中的代码*****************");
        }

    }

}
